Emergency data gateway device

ABSTRACT

A gateway device includes a call handling equipment (CHE) listener interface, an Internet Protocol (IP) interface, a provisioning engine, and a message parsing engine. The CPE listener interface forms a communication channel with a CHE and receives call event data from the CHE. The IP interface communicates with a cloud-based processing system. The provisioning engine receives, from the cloud-based processing system via the IP interface, instructions for parsing data from a data output format of the CHE into a consistent data format of the cloud-based processing system. The message parsing engine parses the call event data received from the CHE via the CHE listener interface, and formats the call event data according to the consistent data format. The gateway device transmits the formatted call event data to the cloud-based processing system via the IP interface.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.16/289,432, filed Feb. 28, 2019, which claims priority to U.S.application Ser. No. 16/179,795, filed Nov. 2, 2018, now U.S. Pat. No.10,264,122, which claims the benefit of and priority to U.S. ProvisionalApplication No. 62/678,845, filed May 31, 2018, all of which areincorporated by reference in their entireties.

BACKGROUND

Public Safety Answering Points (PSAPs) receive emergency calls from thelegacy time division multiplexing (TDM)-based Selective Router (SR)network and NG9-1-1 Emergency Services IP Network (ESInet). These callsterminate to 911 Customer Premises Equipment (CPE) systems or other callhandling systems that distribute the calls to dispatchers. Capable CPEsystems provide telemetry information for incoming emergency calls, suchas various forms of emergency caller location information, call routingactions, Automatic Call Distribution (ACD) events, etc. CPE systemstraditionally interface with on-site call taking and computer-aideddispatch (CAD) applications, which operate on servers in the PSAP andconnect directly to the CPE system over the local network. The 911industry is moving towards using Internet Protocol (IP) basedcommunications, such as voice over IP (VoIP). However, with over 6000PSAPs operating in the United States alone, the changeover to fullyIP-based PSAPs is expected to take many years. As the public safetyindustry at large transitions to IP-based technology that is deployed toprivate, public, and hybrid cloud infrastructure, interim solutions canbridge the gap to legacy premise-based equipment.

Because each CPE system is a stand-alone, custom-built system, there isa large amount of variation in existing CPE systems across the 6000+PSAPs in the United States. For example, many different proprietary dataformats are used across different CPE systems to structure emergencycall-related data. Cloud-based call taking and CAD solutions are beingdeveloped, such as RapidDeploy's CAD platform. Cloud-based call takingand CAD offers several improvements over traditional on-premisescall-taking and CAD systems, including the ability to quickly deploy newfeatures and updates to all users, less on-site infrastructure, andincreased immunity to malware attacks. However, cloud-based call-takingand dispatch solutions are typically IP-based, making it challenging toconnect to legacy, non-IP-based CPE systems.

SUMMARY

A gateway device connects existing call handling equipment (CHE) tocloud-based CAD systems. The gateway device allows PSAPs to integratecurrent CPE systems and other types of CHE to modern emergency dispatchapplications, such as cloud-based call taking and CAD providers(referred to jointly as CAD providers). The gateway device is configuredto connect to a CHE, receive emergency call data in the data outputformat used by the CHE, parse and reformat the received data into astructured format used by a cloud-based CAD provider, and transmit thereformatted data over an IP network to a server of the CAD provider. Thegateway device connects to a secure network, such as Microsoft AzureGovernment, providing a reliable transmission of events received fromthe CHE to the cloud-based CAD provider.

The CAD provider synchronizes with and monitors the status of thegateway devices to which it is connected. Each gateway device mayprovide the cloud-based CAD provider with an inventory of on premise CHEto which it is connected, and provide and status updates about theconnected CHE, so that the CAD provider can monitor the status of theCHE and provide alerts to PSAPs about potential issues. In someembodiments, the cloud-based CAD provider can remotely and efficientlyreconfigure one or more of the gateway devices. For example, the CADprovider can push a software update to all of the connected gatewaydevices at once.

In some embodiments, the CAD provider may perform on-demand provisioningwhen a new gateway device is connected to the network. As explainedabove, the format of emergency call data provided by CHE is notstandardized, so the data format varies between different CHE vendorsand products. Advantageously, because the gateway devices are networkconnected, each gateway device does not need to be manually programmedbased on the output data format of the CHE. Instead, the CAD providermay store instructions for parsing each output data format used by a CHEvendor or product, and push the appropriate instructions to a gatewaydevice based on the type of CHE to which it is connected. Theinstructions for parsing a given call data format are only programmedone time (i.e., for the first gateway device that receives data in agiven data output format), and the instructions are then automaticallyprovided to additional gateway devices that receive data in the sameoutput data format.

In an embodiment, a gateway device includes a call handling equipment(CHE) listener interface, an internet protocol (IP) interface, aprovisioning engine, and a message parsing engine. The CHE listenerinterface is configured to form a communication channel with CHE andreceive call event data from the CHE. The IP interface is configured tocommunicate with a cloud-based processing system. The provisioningengine is configured to receive, from the cloud-based processing systemvia the IP interface, instructions for parsing data from a data outputformat of the CHE. The message parsing engine is configured to parse thecall event data received from the CHE via the CHE listener interfaceaccording to the instructions, and format the call event data accordingto a consistent data format. The gateway device is configured totransmit the formatted call event data to the cloud-based processingsystem via the IP interface.

In another embodiment, a gateway device performs a method for processingemergency call data. The gateway device receives call event data fromcall handling equipment (CHE) in communication with the gateway device.The gateway device parses the received call event data based on parsinginstructions for parsing data from a data output format of the CHEserver. The gateway device formats the parsed call event data accordingto a consistent data format used by a cloud-based processing systemaccording to formatting instructions. The gateway device transmits theformatted call event data to the cloud-based processing system via an IPinterface.

In another embodiment, a cloud-based processing system performs a methodfor provisioning a gateway device. The system receives, from the gatewaydevice over an Internet connection, data describing a local environmentof the gateway device. The environment includes call handling equipment(CHE) configured to provide emergency call data. The system determinesan output data format of a plurality of data formats for the CHE basedon the data describing the local environment. The system retrievesinstructions for parsing data from the output data format and formattingthe parsed data in a consistent format, and transmits the instructionsto the gateway device over the Internet connection.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an emergency call taking and dispatch environment including agateway device, according to an embodiment.

FIG. 2 is a block diagram of the gateway device, according to anembodiment.

FIG. 3 is a block diagram of a cloud-based CAD system, according to anembodiment.

FIG. 4 is an activity diagram showing a process of getting call datafrom CHE to a dispatcher using the gateway device, according to anembodiment.

FIG. 5 is a flowchart showing a process of provisioning a gatewaydevice, according to an embodiment.

The figures depict various embodiments of the present disclosure forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the disclosure described herein.

DETAILED DESCRIPTION

FIG. 1 is an emergency call taking and dispatch environment 100including a gateway device, according to an embodiment. The environment100 includes call handling equipment (CHE) 120, a gateway device 130, adispatcher CAD device 140, a telephony network 150, two callers 160, anIP-based network 170, and a cloud-based computer-aided dispatch (CAD)system 180. In this embodiment, the CHE 120, gateway device 130, anddispatcher CAD device 140 are all located within a public safetyanswering point (PSAP) 110. In some embodiments, the CHE 120 is locatedoff-site and connected to a private network of the PSAP 110, and thegateway device 130 is located with and connected to the CHE 120. Inalternative configurations, different and/or additional components maybe included in the system environment 100, or the locations andconnections between components may differ. Additionally, functionalitydescribed in conjunction with one or more of the components shown inFIG. 1 may be distributed among the components in a different mannerthan described in conjunction with FIG. 1 in some embodiments.

The PSAP 110 is an emergency call taking center. PSAPs typically includetelephony infrastructure for receiving emergency calls and routing thecalls to dispatchers working at the PSAP. PSAPs also include dispatchequipment that dispatchers use to communicate information about theemergency calls to appropriate first responders (e.g., police, fire, ormedical responders). CHE 120 is the call handling equipment locatedon-site in the PSAP 110 or connected to a private network of the PSAP110. CHE 120 can include various hardware devices, such as servers,routers, and switches, for supporting delivery of emergency calls todispatchers. In some embodiments, CHE includes customer premisesequipment (CPE). For example, one or more CPE servers connect the PSAP110 to the telephony network 150, and handle and process telephonyaspects of emergency calls. In addition to CPE servers, CPE can alsovarious other devices located within the PSAP 110, such as routers andtelephony switching systems used by dispatchers to receive calls. Inother embodiments, CHE 120 may include Next Generation Core Services(NGCS) equipment or other types of Functional Elements (FE) or systemsthat support delivery of Next Generation 9-1-1 (NG911) emergency calls.

The telephony network 150 is a network that connects callers 160 makingemergency calls to PSAPs 110. For example, the telephony network 150 maybe the legacy selective router (LSR) network or some other component ofthe public switched telephony network (PSTN). Within the telephonynetwork 150, a call from a caller, such as caller 160 a or caller 160 b,may be routed to a particular PSAP 110 by a routing facility based onthe location of the caller. The call routing may be handled by anEnhanced 911 (E911) system or NG911 system.

The callers 160 a and 160 b use any device enabled for voice calls toconnect to the PSAP 110. For example, the callers 160 may connect to thetelephony network 150 using landline phones, mobile phones, voice overIP (VoIP) phones, etc. The callers 160 access the PSAP 110 by dialing astandard emergency number, such as 911 in the United States or 112 inthe European Union. While two callers 160 are shown in FIG. 1, it shouldbe understood that the PSAP 110 typically handles calls for a region(e.g., a city, county, or state) that includes many more potentialcallers, e.g., thousands or millions of callers. Furthermore, the PSAP110 may be configured to handle emergency calls from more than twocallers 160 simultaneously.

The CHE 120 receives and handles incoming calls from the telephonynetwork 150. For example, as shown in FIG. 1, the CHE 120 receives voicecalls from caller 160 a and caller 160 b via the telephony network 150.The CHE 120 creates a call event for each received call. As used herein,a call event is an event within an emergency dispatch system (e.g., theCHE 120 and connected systems, such as the gateway device 130 andcloud-based processing system 180) that describes an emergency callsession created by the CHE 120 in response to receiving an emergencycall from a caller 160. The CHE 120 routes each received voice call to adispatcher phone system (not shown in FIG. 1), which is typically withinthe PSAP 110. In addition, the CHE 120 extracts metadata describing thecall event, such as the phone number of the caller 160, the name of thecaller 160, the telephone service provider of the caller 160, and thelocation of the caller 160. The CHE 120 structures and outputs themetadata describing the call event, typically via a wired connection.The CHE 120 may output the metadata in one or more of a variety ofoutput data formats, such as Automatic Location Information (ALI), CallDetail Report (CDR), or National Emergency Number Association (NENA) i3Logging.

The gateway device 130 connects to the CHE 120, receives the callmetadata output by the CHE 120, and provides the metadata to thecloud-based processing system 180. The gateway device 130 is programmedto parse the metadata in the output data format of the CHE 120 andformat the parsed metadata into a consistent data format recognized bythe cloud-based processing system 180. The metadata is formatted by thegateway device 130 into cloud-friendly format, such as JSON. Using aconsistent format allows the cloud-based processing system 180 to store,index, and search the metadata in a distributed cloud environment.

The gateway device 130 may be implemented as a system on a chip (SoC)built using low cost, off-the-shelf hardware, such as a system based onan ARM or x86 processor architecture. The gateway device 130 may executean operating system that is compatible with the cloud-based processingsystem 180 for greater compatibility with the cloud-based processingsystem 180. For example, the gateway device 130 uses a Microsoft IoTplatform, such as Windows 10 IoT Core, and the cloud-based processingsystem 180 runs Microsoft Azure Government cloud.

The gateway device 130 includes one or more physical ports forconnecting to one or more devices of the CHE 120. For example, thegateway device 130 includes a DB9 DTE serial interface and an RJ-45Ethernet. The gateway device 130 may be configured to receive dataencapsulated and transported by one or more protocols, such as HTTP,SOAP/XML, TCP socket, or EIA/TIA RS-232. In some embodiments, thegateway device 130 has two or more physical ports to connect to andreceive data from two or more CHE devices (e.g., two or more CPEservers) simultaneously. In other embodiments, if the PSAP 110 has twoor more CHE devices for call handling, a different gateway device 130may be connected to each device.

The gateway device 130 is an Internet-enabled device, also referred toas an Internet of Things (IoT) device. The gateway device 130 connectsto the cloud-based processing system 180 via an IP-based network 170.The gateway device 130 includes one or more high-bandwidth IPinterfaces, which may be wired (e.g., Ethernet) or wireless connections.The gateway device 130 may include one primary IP interface and one ormore backup IP interfaces (e.g., one wired connection and one wirelessconnection) for increased reliability. In some embodiments, the gatewaydevice 130 may segment network traffic between multiple IP interfaces.The gateway device 130 is described in greater detail with respect toFIG. 2.

The IP-based network 170 is a network that connects the cloud-basedprocessing system 180 to equipment, including the gateway device 130 anddispatcher CAD device 140, at various PSAPs, such as PSAP 110. TheIP-based network 170 is network over which devices transmit and receivecommunications using Internet Protocol. The IP-based network 170 mayinclude a secure Internet connection to which the gateway device 130 anddispatcher CAD device 140 connect to the cloud-based processing system180, such as connection to the Microsoft Azure Government cloudcomputing platform. Although only one PSAP 110 is shown in FIG. 1, manysuch PSAPs 110 may connect to the cloud-based processing system 180 viathe IP-based network 170.

The cloud-based processing system 180 receives the formatted metadatagenerated by the gateway device 130 based on the metadata received fromthe CHE 120, and processes the received formatted metadata. In oneembodiment, the cloud-based processing system 180 is a call analyticssystem that performs analysis on received emergency calls based on theinformation received from one or more gateway devices. In anotherembodiment, the cloud-based processing system 180 is a cloud-basedcomputer aided dispatch (CAD) system that manages a CAD service thatprovides information about emergency calls and first responders todispatchers, and enables dispatchers to connect to first responders anddispatch first responders to the locations of emergencies. In thisembodiment, the cloud-based CAD system connects to the gateway device130 and to a dispatcher CAD device 140 located at the PSAP 110 via theIP-based network 170. The cloud-based CAD system processes the receiveddata from the gateway device 130 and provides information about a caller160 to the dispatcher CAD device 140 for display to a dispatcher. Thecloud-based CAD system may provide a web interface to the dispatcher CADdevice 140, e.g., in website accessed by a browser executing on thedispatcher CAD device 140. The cloud-based CAD system may also receiveinformation from the dispatcher CAD device 140 input by the dispatcher,e.g., additional information about a caller 160, selections forresponding to the call, information about first responders who weredispatched, etc.

The cloud-based processing system 180 may store information receivedfrom the gateway device 130 (and, optionally, dispatcher CAD device 140)and performs analytics to assess the health and operation of thecloud-based processing system 180 and its connected PSAPs 110. Forexample, the cloud-based processing system 180 monitors the operationsof the CHE 120 and the gateway device 130, and may alert PSAPs 110 toany potential issues.

The cloud-based processing system 180 is implemented by one or morehighly secure and reliable servers. For example, the cloud-basedprocessing system 180 may operate on the Microsoft Azure Governmentcloud. An example of a cloud-based CAD system, which is oneimplementation of the cloud-based processing system 180, is described ingreater detail with respect to FIG. 3.

The dispatcher CAD device 140 is a computer system operated by adispatcher on-site at the PSAP 110. Typical dispatcher CAD devices 140includes the hardware and software needed to display user interfaces,connect to the IP-based network 170, and detect user input. Thedispatcher CAD device 140 includes an application that allowsinteraction with a cloud-based CAD system. The application may be abrowser that allows a dispatcher to access a web-based CAD serviceprovided by the cloud-based processing system 180. Alternatively, theapplication may be a dedicated application provided by the cloud-basedprocessing system 180 to enable interactions with the cloud-basedprocessing system 180. In other embodiments, the cloud-based processingsystem 180 does not provide a web-based CAD service, and the dispatcherCAD device 140 obtains a CAD service through a different system.

In some embodiments, the dispatcher CAD device 140 receives some or allof the call event data about an emergency call received by the gatewaydevice 130 via the cloud-based processing system 180. The dispatcher CADdevice 140 is associated with a position number, which corresponds tothe position number used by the CHE 120 to route calls to thedispatcher. The cloud-based processing system 180 uses this positionnumber to provide relevant call information to a dispatcher CAD device140, i.e., information relating to a call routed by the CHE 120 to thedispatcher using the dispatcher CAD device 140. In other embodiments,the dispatcher CAD device 140 has a direct connection to the gatewaydevice 130. In such embodiments, the gateway device 130 has anadditional output channel for providing real-time call event directly tothe dispatcher CAD device 140, to ensure that on-site dispatchersreceive the call event data. For example, the gateway device 130 may beconfigured to connect to an internal IP-based network over a wired orwireless connection, and transmit real time call event data to thedispatcher CAD device 140 over this internal network. In someembodiments, this internal network channel is a backup channel used ifthe connection to the cloud-based processing system 180 is disrupted;alternatively, the internal network channel may be used during standardoperation. When call event data is transmitted over the internal networkto a dispatchers, the gateway device 130 may use the position number toprovide the call event data to the appropriate dispatcher CAD device140.

FIG. 2 is a block diagram of the gateway device 130, according to anembodiment. The gateway device 130 includes a CHE listener interface210, encrypted data storage 220, a message parsing engine 230, an IPinterface 240, a provisioning engine 250, and a status engine 260. Inalternative configurations, different and/or additional components maybe included in the gateway device 130. Additionally, functionalitydescribed in conjunction with one or more of the components shown inFIG. 2 may be distributed among the components in a different mannerthan described in conjunction with FIG. 2 in some embodiments.

The CHE listener interface 210 is an interface that forms acommunication channel with the CHE 120 and receives call event data fromthe CHE 120. The CHE listener interface 210 may include one or moreserial ports, Ethernet ports, or other types of ports for connecting tothe CHE 120. In some embodiments, the CHE listener interface 210 alsoincludes circuitry configured to perform initial processing and storageof the call event data. The call event data may be received as a streamof distinct data messages, each data message corresponding to aparticular caller 160. For example, a data message for an emergency callevent includes the phone number, name, telephone service provider, andpreliminary location information for a caller 160. The data message mayalso indicate the dispatcher to whom the CHE 120 has routed the call,e.g., the position number in the PSAP 110 of the dispatcher. The CHE 120may also transmit follow-on data messages for the same emergency callevent, e.g., to include an updated location for the caller 160. Thesefollow-on messages may have the same formatting as the initial messages.The CHE listener interface 210 receives and stores the data messages forprocessing by the message parsing engine 230. In some embodiments, theCHE listener interface 210 generates a message identifier for each ofthe data messages, and stores each data message with its messageidentifier in a message queue. The message queue may be stored in theencrypted data storage 220.

In some embodiments, the CHE listener interface 210 is configured toreceive call event data from two or more CHE devices. In suchembodiments, the CHE listener interface 210 comprises two or morephysical ports. As data messages are received at the physical ports, theCHE listener interface 210 stores data messages from each port in theencrypted data storage 220, e.g., in a single queue, or a queue for eachCHE device, based on time of arrival at the gateway device 130.

The encrypted data storage 220 is a memory local to the gateway device130 for storage of call event data, such as a queue of data messages.The encrypted data storage 220 stores data received from the CHE 120 inan encrypted format to provide data security.

The message parsing engine 230 retrieves call event data from theencrypted data storage 220, parses the data according to instructionsfor parsing the data from the data output format of the CHE 120, andformats the parsed data in a consistent format. If the data messages arestored in a queue, the message parsing engine 230 may retrieve datamessages from the queue in a first-in-first-out (FIFO) order, so thatmessages are processed in the order that they are received. Datamessages from different CHE systems typically include similar types ofdata, but the data messages may be encoded and formatted differently bydifferent CHE systems. The message parsing engine 230 identifies andclassifies parts of each data message based on the encoding andformatting of the connected CHE 120. The message parsing engine 230 thenrecombines the data parsed from the data message according to aconsistent format that is recognized and understood by the cloud-basedprocessing system 180. Each data message in the consistent format outputby the message parsing engine 230 includes an identifier of the PSAP 110at which the message was received, and an identifier of the dispatcherposition to which the call associated with the message is routed.

As an example, a sample data message in the Automatic LocationIdentification (ALI) format, which is one format used by some CHE, isprovided below. This format does not indicate the fields for the variousmessage components, so this data message cannot be interpreted andanalyzed unless the receiving device is specifically configured to parsedata in the ALI format.

265 H1-000 ESN=080 001 (123) 456-7890 12:00 01/01/2018 100 MAIN ST123-4567 RESD AUSTIN  TX DOE,JOHN ALT#= TELCO=SWBT X=+30.263675  CNF=Y=−97.725412  UNC: AUSTIN PD AUSTIN FD

An example of a reformatted data message in JSON format output by agateway device 130 is provided below. The JSON format indicates thefields for each item in the data message, so the data message providedby the gateway device 130 can be easily understood and analyzed.

{ “ContactNumber”: “1234567890”, “City”: “AUSTIN”, “ClassOfService”:“RESD”, “StreetNumber”: “100”, “Latitude”: “+30.263675”, “Longitude”:“−97.725412”, “ContactName”: “DOE,JOHN”, “State”: “TX”, “Street1”: “MAINST”, “SourceDateTime”: “2018-01-01 12:00:00Z” “Telco”: “SWBT” }

The IP interface 240 transmits data to and receives data from thecloud-based processing system 180 over the IP-based network 170. The IPinterface 240 receives formatted data messages from the message parsingengine 230 and transmits these formatted messages to the cloud-basedprocessing system 180 via the IP-based network 170. In particular, theIP interface 240 may connect to an event hub of the cloud-basedprocessing system 180 that is configured to receive data describing callevents from gateway devices. The IP interface 240 also receives datafrom the cloud-based processing system 180, such as configurationinformation and software updates. In addition, the provisioning engine250 and the status engine 260 use the IP interface 240 to communicatewith the cloud-based processing system 180, as described below.

The provisioning engine 250 configures the gateway device 130 to parsemessages from a particular CHE 120. The provisioning engine 250 providesinformation describing the environment of the gateway device 130. Thisincludes information describing the one or more CAD servers 120 to whichthe gateway device 130 are connected, and can include additionalinformation, such information describing the dispatcher positions andthe dispatcher CAD devices 140. In some embodiments, the provisioningengine 250 provides information about the CHE 120 to the cloud-basedprocessing system 180 via the IP interface 240, and receivesinstructions for parsing the data output format of the CHE 120 from thecloud-based processing system 180 based on the information provided. Theprovisioning engine 250 also receives and implements periodic updatesfrom the cloud-based processing system 180. For example, the cloud-basedprocessing system 180 may push a software update to all connectedgateway devices 130, or some subset of connected gateway devices 130,and the provisioning engine 250 of each gateway device 130 installs thesoftware update.

As one example for initially configuring a gateway device 130, theprovisioning engine 250 instructs the CHE listener interface 210 toreceive configuration data from the CHE 120 and pass the configurationdata to the provisioning engine 250. For example, the provisioningengine 250 instructs the CHE listener interface 210 to receive one ormore data messages output by the CHE 120, e.g., one or more datamessages output by the CHE 120 during one or more emergency calls. Theprovisioning engine 250 passes the received information from the CHE 120to the cloud-based processing system 180, which determines the dataoutput format of the CHE 120 based on the information. The cloud-basedprocessing system 180 selects configuration instructions, including themessage parsing instructions, for the gateway device 130 based on thedetermined data output format, and transmits the configurationinstructions to the gateway device 130. Alternatively, an administratorat the cloud-based processing system 180 determines the data outputformat based on the information and selects the configurationinstructions, which the cloud-based processing system transmits to thegateway device 130.

As another example for initially configuring a gateway device 130, theprovisioning engine 250 provides a provisioning user interface that anadministrator at the PSAP 110 can use to provide information about theCHE 120. The gateway device 130 may have an integrated display and inputmechanism, or the gateway device 130 may be configured to connect to adisplay and input mechanism, such as a monitor, mouse, and keyboard. Theprovisioning user interface assists a user (e.g., an administrator inthe PSAP 110) in configuring the gateway device 130 based on propertiesof the CHE 120. For example, the provisioning user interface may requestthat the administrator enter information describing the CHE at the PSAP,such as the number of CHE devices to which the gateway device 130 isconnected; the vendor name, product line, and versioning information ofthe CHE; the number of dispatcher CAD devices 140 and the dispatcherposition numbering; and any other information about the environment ofthe gateway device 130 used by the cloud-based processing system 180.The provisioning engine 250 and cloud-based processing system 180 maycooperate to generate the provisioning user interface; for example, theprovisioning engine 250 passes data received from the provisioning userinterface to the cloud-based processing system 180, and the cloud-basedprocessing system 180 may provide follow-up questions or instructions tothe provisioning engine 250 to display in the provisioning userinterface.

As another example for initially configuring a gateway device 130, thecloud-based processing system 180 stores information about a PSAPenvironment, including one or more gateway devices 130 and connected CHE120, before the gateway device 130 is installed at the PSAP 110. Forexample, when the PSAP 110 contracts with the cloud-based processingsystem 180 to provide CAD services, an administrator at the PSAP 110 mayprovide the cloud-based processing system 180 with information about thePSAP's CHE. In one embodiment, the administrator of the cloud-basedprocessing system 180 may pre-configure the gateway device 130 based onthe information provided by the administrator of the PSAP 110. Inanother embodiment, the administrator of the cloud-based processingsystem 180 associates a particular gateway device 130 with the PSAP 110,e.g., based on a serial number of the gateway device 130. When thegateway device 130 initially connects to the IP-based network 170, theprovisioning engine 250 transmits information identifying the gatewaydevice 130 (e.g., the serial number of the gateway device 130) to thecloud-based processing system 180, the cloud-based processing system 180correlates the identifying information to the previously-provided CHEconfiguration information. The cloud-based processing system 180transmits configuration instructions, including the parsing instructionsfor the CHE 120, to the gateway device 130 based on thepreviously-provided CHE configuration information.

The status engine 260 provides status updates to the cloud-basedprocessing system 180 regarding the gateway device 130 and/or the CADserver 120. For example, the status engine 260 calculates metricsdescribing operations of the gateway device 130, e.g., number of datamessages received, number of data messages processed, processing time,queue size, etc., and transmits the metrics to the cloud-basedprocessing system 180 via the IP interface 240. As another example, thestatus engine 260 monitors connectivity and functionality of all CHE 120to which it is connected. The status engine 260 may be configured todetect errors in the connectivity and/or functionality of the CHE 120and transmit alerts to the cloud-based processing system 180. Thecloud-based processing system 180 can update the dispatcher or anadministrator at the PSAP 110 so that they can quickly address anyissues with the CHE 120.

In some embodiments, the status engine 260 can additionally oralternatively provide status information about the gateway device 130and/or the CHE 120 to a local user at the PSAP 110 via a status userinterface. The status engine 260 may provide the status user interfaceto an integrated display of the gateway device 130, or to a displayconnected to the gateway device 130.

FIG. 3 is a block diagram of a CAD system 300, according to anembodiment. The CAD system 300 is an embodiment of the cloud-basedprocessing system 180. The gateway device 130 includes an IoT event hub310, a real-time data engine 320, a dispatch platform web server 330, anencrypted data storage 340, an analytics engine 350, and a gatewaydevice manager 360. In alternative configurations, different and/oradditional components may be included in the CAD system 300. As onealternative, a cloud-based processing system that does not provide a CADservice may include the IoT event hub 310, the real-time data engine320, the encrypted data storage 340, the analytics engine 350, and thegateway device manager 360. Additionally, functionality described inconjunction with one or more of the components shown in FIG. 3 may bedistributed among the components in a different manner than described inconjunction with FIG. 3 in some embodiments.

The IoT event hub 310 receives and processes data messages describingcall events from a set of gateway devices, such as gateway device 130,connected to the CAD system 300 via the IP-based network 170. In oneembodiment, the gateway device 130 is configured to transmit differenttypes of data messages received from the CHE 120, such as the real-timemessages described above, and data messages that provide summaryinformation describing one or more calls. In this embodiment, the IoTevent hub 310 determines the message type, e.g., based on a flag, orbased on the formatting of the message. The IoT event hub 310 thenroutes each data message based on its message type. For example, the IoTevent hub 310 routes real-time messages to the real-time data engine320, and routes summary data to the analytics engine 350. The IoT eventhub 310 also routes data messages to the encrypted data storage 340,from which the analytics engine 350 retrieves the data for analysis.

The real-time data engine 320 performs real-time processing of datamessages during an emergency call. The real-time data engine 320 parsesthe data messages, including extracting the dispatcher position, thelocation information, caller phone number, caller name, and otheravailable information. The real-time data engine 320 may retrieveadditional data about the call or the caller as available based on theextracted data. For example, the real-time data engine 320 may retrieveadditional location information, information about previous calls,medical history information, etc. from the encrypted data storage 340 orother data sources. The real-time data engine 320 provides data aboutthe caller that may be used by the dispatcher to the dispatcher platformweb server 330.

The dispatcher platform web server 330 is a web server that provides acall-taking and dispatch interface to the dispatcher CAD device 140. Asdescribed with respect to FIG. 1, the dispatcher CAD device 140 mayexecute a browser that accesses a website provided by the dispatchplatform web server 330. The dispatch platform web server 330 maintainsinformation identifying each dispatcher accessing the CAD system 300,such as a PSAP identifier and the position number within the PSAP. Thedispatch platform web server 330 routes data received from the real-timedata engine 320 to the appropriate dispatcher by matching the PSAPidentifier and position number extracted from the data messages to thePSAP identifier and position number of the dispatcher CAD device 140used by the dispatcher to which the CHE 120 routed the call.

The encrypted data storage 340 provides long term storage of the datamessages for analysis of the call event data. The encrypted data storage340 may include one or more of a Binary Large OBject (BLOB) storageservice, data warehouse, key-value database, document database,relational database, or any other type of data storage. In someembodiments, call event data is stored in multiple different databases,which are used for different types of analysis. For example, the IoTevent hub 310 may store real-time data in one database of the encrypteddata storage 340, and store summary data in a different database of theencrypted data storage 340.

The analytics engine 350 analyzes the call event data received fromgateway devices, such as gateway device 130, and provides the results ofthe analytics to PSAP administrators, state or regional agenciesoverseeing emergency response, administrators of the CAD system 300, orother authorized parties. In addition to data from gateway devices, theanalytics engine 350 may also analyze data received from other sources,such as data provided dispatchers received via the dispatcher CAD device140, data provided by emergency responders, social media data, otherservice providers, other 911 systems, location data sources, etc., andincorporate these data sources into various reports. The real-timereports may be provided by the dispatch platform web server 330 or by aseparate web server that provides analytics interfaces.

In some embodiments, the analytics engine 350 provides real-time datastreaming and analysis based on real-time call event data received atthe IoT event hub 310 and passed directly to the analytics engine 350.For example, the analytics engine 350 may provide dashboards describingreal-time call data to administrators (e.g., an administrator of a PSAP,or an administrator of a group of PSAPs, such as county, state, orregional emergency personnel). A real-time dashboard may provide datasummarizing locations of incidents; incident numbers broken down by timeof day, day of week, type of incident, or other factors; incidentresponse times, such as incident registration time, time to scene, timeon scene, time to hospital; data describing the emergency calls, such ascall duration, call transfers, dispatcher utilization, answer time; orother types of data of potential interest to administrators.

In some embodiments, analytics engine 350 retrieves call event data fromthe encrypted data storage 340 and provides periodic reports to PSAP oremergency administrators, or administrators of the CAD system 300. Forexample, the analytics engine 350 can generate reports summarizing PSAPutilization, call routing, dispatch performance, wireless locationaccuracy, and outages. Such reports may be automatically generated andsent to PSAPs or other administrators on a daily, weekly, or monthlybasis, or on some other periodic basis.

The gateway device manager 360 manages provisioning, updating, andmaintaining the gateway devices, such as gateway device 130, connectedto the CAD system 300. The gateway device manager 360 performs on-demandprovisioning of gateway devices during their initial configuration. Forexample, during initial configuration process, the gateway devicemanager 360 receives information transmitted by the provisioning engine250 of the gateway device 130 that describes the environment of thegateway device 130. As described with respect to FIG. 2, thisinformation may include data describing the CHE 120 to which the gatewaydevice 130 is connected, such as vendor and product information, one ormore sample data messages, information identifying the PSAP 110,information input by a PSAP administrator, or other information that thegateway device manager 360 can use to ascertain the data output formatof the CHE 120. The gateway device manager 360 selects parsinginstructions based the data output format of the CHE 120 and transmitsthe selected parsing instructions to the provisioning engine 250. Insome embodiments, the gateway device manager 360 also transmitsformatting instructions along with the parsing instructions, and/orother instructions used by the gateway device 130 during operation. Thegateway device manager 360 may store other data describing theenvironment of the gateway device 130, such as the dispatcher positionsin the PSAP 110, and reference this information during call events.

If the data output format of the CHE 120 is unique, in that it not usedby any other CHE to which any other gateway device connected to the CADsystem 300 is connected, an administrator at the CAD system 300 or thePSAP 110 may manually program the parsing instructions for the uniquedata output format. Advantageously, after parsing instructions for agiven data output format have been programmed once, the gateway devicemanager 360 can provide the parsing instructions for this data outputformat to each gateway device 130 that receives call event data in thisdata output format. Therefore, in the majority of initial gateway deviceconfigurations, the gateway device manager 360 can perform on-demandprovisioning nearly instantaneously without manual programming or humanintervention at the CAD system 300, and with minimal effort at the PSAP110. For example, at the PSAP, an administrator may simply connectingthe gateway device 130 to the CHE 120 and IP-based network 170, and theprovisioning engine 250 and gateway device manager 360 automaticallyconfigure the gateway device 130.

After initial provisioning, the gateway device manager 360 may sendperiodic software updates to the gateway device 130. In addition, thegateway device manager 360 may monitor the connected gateway devices forstatus updates. For example, the gateway device manager 360 may receivevarious alerts provided by the telemetry engine 260 regarding the healthof the gateway device 130 and the connected CHE 120. The gateway devicemanager 360 provides passes these alerts to the appropriateadministrators at the CAD system 300, PSAP 110, or other authorizedadministrators or agencies.

FIG. 4 is an activity diagram showing a process of transferring calldata from CHE 120 to a dispatcher using the gateway device 130,according to an embodiment. The CHE 120 creates 405 a call event inresponse to receiving an emergency call, such as a call from one of thecallers 160 received over the telephony network 150. The CHE 120extracts data describing the call event, and transmits this as callevent data 410 to the gateway device 130.

The gateway device 130 receives and stores 415 the call event data 410transmitted to the gateway device 130 from the CHE 120. For example, asdescribed with respect to FIG. 2, the gateway device 130 receives thecall event data 410 at the listener interface 210, and stores the callevent data 410 in a queue in the encrypted data storage 220. The gatewaydevice 130 parses 420 the received call event data. For example, asdescribed with respect to FIG. 2, the message parsing engine 230retrieves the call event data from the queue in the encrypted datastorage 220 and parses the call event data based on parsing instructionsfor parsing data from a data output format of the CHE 120. After parsingthe call event data, the gateway device 130 (e.g., the message parsingengine 230) formats the parsed call event data according to theconsistent data format that is used by a CAD server, such as the CADsystem 300, according to instructions for formatting the parsed callevent data. The gateway device 130 then transmits 430 the formatted callevent data 435 to the CAD system 300. For example, as described withrespect to FIG. 2, the IP interface 240 of the gateway device 130transmits the formatted call event data to an event hub, such as the IoTevent hub 310, of the CAD system 300 via the IP-based network 170.

The CAD system 300 ingests and routes 440 the formatted call event data435 transmitted to the CAD system 300 from the gateway device 130. Forexample, as described with respect to FIG. 3, the IoT event hub 310ingests and routes the formatted call event data 435. For example, theIoT event hub 310 routes the data to the real-time data engine 320. TheIoT event hub 310 may also route received data messages to encrypteddata storage 340 and/or the analytics engine 350.

The CAD system 300 transmits a dispatcher update 445 to the dispatcherCAD device 140. For example, the real-time data engine 320 extracts datathat can be used by the dispatcher (e.g., callback number, serviceprovider, location, etc.) from the formatted call event data 435 andpasses the extracted data to the dispatch platform web server 330. Thedispatch platform web server 330 transmits the dispatcher update 445 tothe dispatcher CAD device 140, e.g., in a user interface provided by theCAD system 300 via a browser or application. The dispatcher CAD device140, running a browser or other application for accessing data from theCAD system 300, displays 450 the dispatcher update 445 in a userinterface to a dispatcher.

In addition to providing the dispatcher update 445, the CAD system 300analyzes 455 the ingested call event data. For example, as describedwith respect to FIG. 3, the analytics engine 350 of the CAD system 300performs real-time analysis on call events for a PSAP or group of PSAPsand provides interfaces with real-time data. As another example, theanalytics engine 350 periodically analyzes call event data received overa period of time and provides periodic reports to administrators.

FIG. 5 is a flowchart showing a process 500 of provisioning a gatewaydevice, according to an embodiment. The steps of the process 500 may beperformed by the CAD system 300, and in particular, by the gatewaydevice manager 360, as described below. Alternatively, the steps of theprocess 500 may be performed by any cloud-based processing system 180,such as a gateway device manager of a cloud-based analytics system. Someor all of the steps may be performed by other modules in otherembodiments. In addition, other embodiments may include different and/oradditional steps and the steps may be performed in different orders.

The gateway device manager 360 receives 510 data describing theenvironment of the gateway device 130. For example, the provisioningengine 250 provides data describing the environment of the gatewaydevice 130, such as the number of CHE devices that provide emergencycall data, and data that can be used to determine the output data formatof the CHE. The provisioning engine 250 may provide this information tothe gateway device manager 360 via an Internet connection.

The gateway device manager 360 determines an output data format of aplurality of data formats for the CHE based on the data describing thelocal environment. For example, if the gateway device manger 360received product information identifying the CHE (e.g., vendor, product,versioning information), the gateway device manager 360 identifies anoutput data format based on this product information. As anotherexample, if the gateway device manager 360 received a sample datamessage from the CHE 120, the gateway device manager 360 may comparethis sample data message to one or more other data messages receivedfrom other gateway devices to determine the data output format.

The gateway device manager 360 retrieves 530 instructions for parsingdata from the output data format and formatting the parsed data to theconsistent format. For example, the gateway device manager 360 may storeparsing and formatting instructions for various data output formats, andretrieve the appropriate set of parsing and formatting instructionsbased on the determined data output format. If at least one othergateway device connected to the CAD system 300 receives data messages inthe determined output format, the gateway device manager 360 stores andcan quickly retrieve these instructions. In some embodiments, theformatting instructions may be the same for each output data format.Alternatively, the formatting instructions may vary based on the outputdata format, e.g., if some CHE provides data fields that other CHE doesnot.

The gateway device manager 360 transmits 540 the retrieved instructionsto the gateway device 130 over the Internet connection. The gatewaydevice 130 stores the instructions and, during operation, uses theinstructions to parse and format data messages received from the CHE120.

Some portions of the above description describe the embodiments in termsof algorithmic processes or operations. These algorithmic descriptionsand representations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs comprising instructions for executionby a processor or equivalent electrical circuits, microcode, or thelike. Furthermore, it has also proven convenient at times, to refer tothese arrangements of functional operations as modules, without loss ofgenerality. The described operations and their associated modules may beembodied in software, firmware, hardware, or any combinations thereof.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. It should be understood thatthese terms are not intended as synonyms for each other. For example,some embodiments may be described using the term “connected” to indicatethat two or more elements are in direct physical or electrical contactwith each other. In another example, some embodiments may be describedusing the term “coupled” to indicate that two or more elements are indirect physical or electrical contact. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other. Theembodiments are not limited in this context.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the disclosure. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for agateway device. Thus, while particular embodiments and applications havebeen illustrated and described, it is to be understood that thedescribed subject matter is not limited to the precise construction andcomponents disclosed herein and that various modifications, changes andvariations which will be apparent to those skilled in the art may bemade in the arrangement, operation and details of the method andapparatus disclosed herein.

1. (canceled)
 2. A method for processing emergency call data comprising:receiving a plurality of data messages comprising emergency call data,each of the plurality of data messages associated with one of aplurality of emergency calls being handled by call handling equipment(CHE), the plurality of data messages having the emergency call data ina common format, each data message comprising a phone number associatedwith a device making the associated emergency call; parsing theplurality of data messages to extract, for each data message, aplurality of data fields, the plurality of data fields comprising thephone number associated with the device; and providing, by a web server,a user interface comprising at least a portion of the emergency calldata associated with one of the plurality of emergency calls, the userinterface displaying at least the phone number associated with thedevice and a location of the device.
 3. The method of claim 2, furthercomprising: retrieving location information for one of the plurality ofemergency calls from a second data source based on the emergency calldata associated with the emergency call; and providing the retrievedlocation in the user interface.
 4. The method of claim 2, wherein theuser interface is a dashboard aggregating real-time emergency call dataassociated with the plurality of emergency calls.
 5. The method of claim4, wherein the dashboard provides at least one of locations of theplurality of emergency calls; response times for the plurality ofemergency calls; durations of the plurality of emergency calls; anddispatcher actions for the plurality of emergency calls.
 6. The methodof claim 2, wherein an event hub receives the plurality of data messagesand passes the plurality of data messages to a real-time data engine,and the real-time data engine parses the plurality of data messages toextract the plurality of data fields.
 7. The method of claim 2, whereinthe plurality of data messages comprises a first set of data messagesassociated with a first set of calls being handled by a first CHE and asecond set of messages associated with a second set of calls beinghandled by a second CHE.
 8. The method of claim 7, wherein the first CHEhas a different output format from the second CHE, and the first andsecond sets of data messages have the same common format.
 9. A systemfor processing emergency call data comprising: an event hub configuredto receive a plurality of data messages comprising emergency call data,each of the plurality of data messages associated with one of aplurality of emergency calls being handled by call handling equipment(CHE), the plurality of data messages having the emergency call data ina common format, each data message comprising a phone number associatedwith a device making the associated emergency call; a real-time dataengine configured to extract, for each of the plurality of datamessages, a plurality of data fields, the plurality of data fieldscomprising the phone number associated with the device; and a web serverconfigured to provide a user interface, the user interface comprising atleast a portion of the emergency call data associated with one of theplurality of emergency calls, the user interface displaying at least thephone number associated with the device and a location of the device.10. The system of claim 9, wherein the real-time data engine is furtherconfigured to retrieve location information for one of the plurality ofemergency calls from a second data source based on the emergency calldata associated with the emergency call, and the web server isconfigured to provide the retrieved location in the user interface. 11.The system of claim 9, wherein the user interface is a dashboardaggregating real-time emergency call data associated with the pluralityof emergency calls.
 12. The system of claim 11, wherein the dashboardprovides at least one of locations of the plurality of emergency calls;response times for the plurality of emergency calls; durations of theplurality of emergency calls; and dispatcher actions for the pluralityof emergency calls.
 13. The system of claim 9, wherein the plurality ofdata messages comprises a first set of data messages associated with afirst set of calls being handled by a first CHE and a second set ofmessages associated with a second set of calls being handled by a secondCHE.
 14. The system of claim 13, wherein the first CHE has a differentoutput format from the second CHE, and the first and second sets of datamessages have the same common format.
 15. The system of claim 14,further comprising a device manager configured to transmit first parsinginstructions to a first gateway device connected to the first CHE andconfigured to transmit the first set of data messages, and transmitsecond parsing instructions to a second gateway device connected to thesecond CHE and configured to transmit the second set of data messages.16. A method for processing emergency call data comprising: receivingcall event data from call handling equipment (CHE), the call event dataassociated with an emergency call; parsing the call event data accordingto parsing instructions for parsing a data output format of the CHE, theparsed call event data comprising a phone number associated with theemergency call; formatting the parsed call event data according toformatting instructions, the formatted call event data comprising thephone number; and transmitting the formatted call event data to a remoteprocessing system via a network, the remote processing system configuredto provide access to at least a portion of the call event data.
 17. Themethod of claim 16, wherein the call event data further comprises alocation associated with a device placing the emergency call, and theremote processing system is configured to provide access to the phonenumber associated with the emergency call and the location associatedwith the device placing the emergency call.
 18. The method of claim 16,further comprising transmitting summary data describing at least oneemergency call after the emergency call has concluded, the summary datahaving a different format from the formatted call event data.
 19. Themethod of claim 16, wherein the call event data received from the CHEcomprises a plurality of data messages, the method further comprising:generating a message identifier for each of the plurality of datamessages; storing each data message of the plurality of data messageswith its corresponding message identifier in a message queue; andretrieving each data message of the plurality of data messages from themessage queue, in an order indicated by the message queue.
 20. Themethod of claim 16, further comprising: calculating metrics describingprocessing of the received call event data; and transmitting thecalculated metrics to the remote processing system.
 21. The method ofclaim 16, further comprising: monitoring connectivity to the CHE;monitoring functionality of the CHE based on the call event datareceived from the CHE; detecting an error related to the CHE based on atleast one of the monitored connectivity or the monitored functionality;and transmitting an alert to the remote processing system indicating theerror on the CHE.